﻿#ifndef QSTRINGUTILS_H
#define QSTRINGUTILS_H

#include <QString>
#include <QStringList>
#include <QChar>
#include <QRegularExpression>

class QStringUtils
{
public:
    // 将字符串转为大写
    static QString toUpperCase(const QString &str);

    // 将字符串转为小写
    static QString toLowerCase(const QString &str);

    // 替换字符串中的子串
    static QString replace(const QString &str, const QString &before, const QString &after);

    // 使用正则表达式替换字符串中的子串
    static QString replaceRegex(const QString &str, const QRegularExpression &regex, const QString &replacement);

    // 分割字符串
    static QStringList split(const QString &str, const QString &sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive);

    // 连接字符串列表
    static QString join(const QStringList &list, const QString &separator);

    // 去除字符串两端的空白字符
    static QString trimmed(const QString &str);

    // 检查字符串是否为空（包括只包含空白的情况）
    static bool isEmptyOrWhitespace(const QString &str);

    // 获取字符串长度
    static int length(const QString &str);

    // 判断字符串是否以指定前缀开头
    static bool startsWith(const QString &str, const QString &prefix, Qt::CaseSensitivity cs = Qt::CaseSensitive);

    // 判断字符串是否以指定后缀结尾
    static bool endsWith(const QString &str, const QString &suffix, Qt::CaseSensitivity cs = Qt::CaseSensitive);

    static QString formatBySecond(uint64_t second);
    static QString formatbyteSize(uint64_t size);
    /**
     * @brief numberDivision 数值添加分隔符
     * @param value 数值
     * @param interval 分割长度
     * @param precision 保留小数为
     * @return
     */
    static QString numberDivision(double value,int interval,int precision);
};

#endif // QSTRINGUTILS_H
